#include "UdpServer.hpp"
#include "User.hpp"

// ./udpserver localport
int main(int argc,char* argv[])
{
    if(argc!=2)
    {
        std::cerr<<"Usage: "<<argv[0]<<"localport"<<std::endl;
        Die(USAGE_ERR);
    }

    uint16_t port=std::atoi(argv[1]);

    ENABLE_CONSOLE_LOG();

    //用户管理模块
    std::shared_ptr<UserManager> um=std::make_shared<UserManager>();

    //网络模块
    // std::unique_ptr<UdpServer> svr_ptr=std::make_unique<UdpServer>([&um](InetAddr &id){
    //     um->AddUser(id);
    // },port);
    std::unique_ptr<UdpServer> svr_ptr=std::make_unique<UdpServer>(port);
    svr_ptr->RegisterService([&um](InetAddr &id){ um->AddUser(id);},\
                             [&um](int sockfd,const std::string &message){ 
                                um->Router(sockfd,message);
                            });
    svr_ptr->InitServer();//初始化服务器
    svr_ptr->Start();//启动服务器

    return 0;
}